李守中

MySQL 配置文件中 client 和 mysql 两个 group 的区别

MySQL 的文档里有这么一句:

The [client] option group is read by all client programs provided in MySQL distributions (but not by mysqld).

就是说 [client] 里面的内容可以被 mysql, mysqladmin, mysqldump 等等客户端读取,而 [mysql] 里的内容只能给 mysql 客户端读取。

比如,给一个配置 A:

[client]
user = lsz
password = passwd
port = 3306
host = 127.0.0.1

[mysql]
user = root
password = passwd
port = 3306
prompt = [\u@\p][\d]
no_auto_rehash

使用 mysql 命令连接数据库,最终可以看到连到数据库的是 root 用户。因为 mysql group 在 client group 之后,而后面的 ( mysql 中的 ) 配置会覆盖之前的 ( client 中的 ) 配置。

如果 mysql group 先出现而 client 后出现,那么最终连接到数据库的是 lsz 用户。

同时,不论 mysql group 还是 client group 哪个在前,登陆成功后的 prompt 都是 [\u@\p][\d] 格式的。因为 prompt 出现了一次 ( 意味着它被配置了 ),并且只出现了一次 ( 意味着配置没有被覆盖 )。

给一个配置 B:

[client]
user = lsz
password = passwd
port = 3306
host = 127.0.0.1

[mysql]
user = root
password = passwd
port = 3308 # wrong port
prompt = [\u@\p][\d]
no_auto_rehash

使用 mysql, mysqladmin, mysqldump 分别连接,会出现:

给一个配置 C:

[client]
user = lsz
password = passwd
port = 3308 # wrong port
host = 127.0.0.1

[mysql]
user = root
password = passwd
port = 3306
prompt = [\u@\p][\d]
no_auto_rehash

使用 mysql, mysqladmin, mysqldump 分别连接,会出现:



Last Update: 2022-05-17 Tue 14:43

Generated by: Emacs 28.2 (Org mode 9.5.5)   Contact: [email protected]

若正文中无特殊说明,本站内容遵循: 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议